package com.eshipenet.shipnet.shiprpc.util;

import com.eshipenet.shipnet.ship.Page;

public class PageUtil {


  /**
   * @param limit   每页显示数据数量
   * @param size    查询结果数量
   * @param pageNum 当前页
   *
   */
  public static Page page(int limit, int size, int pageNum) {

    if (limit == 0) {
      limit = size;
    }
    if (pageNum == 0) {
      pageNum = 1;
    }
    //总页数
    int pages = (int) Math.ceil(size / (limit * 1.0));
    //开始索引
    int startIndex = (pageNum - 1) * limit;

    //下一页
    boolean hasNextPage = false;

    //上一页
    boolean hasPreviousPage = false;


    if (size % limit == 0) {
      //说明整除，正好每页显示pageSize条数据，没有多余一页要显示少于pageSize条数据的
      pages = size / limit;


    } else {
      //不整除，就要在加一页，来显示多余的数据。
      pages = size / limit + 1;

    }

    //判断上一页和下一页

    if (pages > pageNum) {
      hasNextPage = true;
    }
    if (pageNum > 1 && pages >= pageNum && pages > 1) {
      hasPreviousPage = true;
    }

    //计算结束索引
    int endIndex = 0;
    if (pages > pageNum) {
      endIndex = pageNum * limit;

    } else if (pages < pageNum) {
      endIndex = size;

    } else if (pages == pageNum) {
      endIndex = size;
    } else {
      endIndex = size - pageNum * limit;
    }

    Page page = new Page(startIndex,endIndex,pages,hasNextPage,hasPreviousPage);
    return  page;


  }


}
